create database security;
use security;
-- 用户表
CREATE TABLE `user`
(
    `id`                    int(11) NOT NULL AUTO_INCREMENT,
    `username`              varchar(32)  DEFAULT NULL,
    `password`              varchar(255) DEFAULT NULL,
    `enabled`               tinyint(1) DEFAULT 1,
    `accountNonExpired`     tinyint(1) DEFAULT 1,
    `accountNonLocked`      tinyint(1) DEFAULT 1,
    `credentialsNonExpired` tinyint(1) DEFAULT 1,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

-- 处理用户校验逻辑（UserDetails）

--        自定义的其他逻辑是在 org.springframework.security.core.userdetails.User 中提供的，只要在登录的时候把user中提供的信息返回即可达到支持的业务逻辑，下面列出支持的业务场景：

--    isEnabled 账户是否启用
--    isAccountNonExpired 账户没有过期
--   isCredentialsNonExpired 身份认证是否是有效的
--  isAccountNonLocked 账户没有被锁定

-- 角色表
CREATE TABLE `role`
(
    `id`      int(11) NOT NULL AUTO_INCREMENT,
    `name`    varchar(32) DEFAULT NULL,
    `name_zh` varchar(32) DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- 用户角色关系表
CREATE TABLE `user_role`
(
    `id`  int(11) NOT NULL AUTO_INCREMENT,
    `uid` int(11) DEFAULT NULL,
    `rid` int(11) DEFAULT NULL,
    PRIMARY KEY (`id`),
    KEY   `uid` (`uid`),
    KEY   `rid` (`rid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- 插入用户数据
BEGIN;
INSERT INTO `user`
VALUES (1, 'lisi', '$2a$10$5ooQI8dir8jv0/gCa1Six.GpzAdIPf6pMqdminZ/3ijYzivCyPlfK', 1, 1, 1, 1);
INSERT INTO `user`
VALUES (2, 'admin', '$2a$10$5ooQI8dir8jv0/gCa1Six.GpzAdIPf6pMqdminZ/3ijYzivCyPlfK', 1, 1, 1, 1);
INSERT INTO `user`
VALUES (3, 'zhangsan', '$2a$10$5ooQI8dir8jv0/gCa1Six.GpzAdIPf6pMqdminZ/3ijYzivCyPlfK', 1, 1, 1, 1);
COMMIT;
-- 插入角色数据
BEGIN;
INSERT INTO `role`
VALUES (1, 'ROLE_common', '一般用户');
INSERT INTO `role`
VALUES (2, 'ROLE_admin', '系统管理员');
INSERT INTO `role`
VALUES (3, 'ROLE_vip', 'vip用户');
COMMIT;
-- 插入用户角色数据
BEGIN;
INSERT INTO `user_role`
VALUES (1, 1, 1);
INSERT INTO `user_role`
VALUES (2, 2, 2);
INSERT INTO `user_role`
VALUES (3, 3, 3);

COMMIT;